package Leetcode.lc128;

import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.stream.Collectors;

/***
 * 给定一个未排序的整数数组 nums ，找出数字连续的最长序列（不要求序列元素在原数组中连续）的长度。
 *
 * 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。
 */
public class Sloution {
    public int longestConsecutive(int[] nums) {
        //nums转为set更加方便，连续不管重复
        HashSet<Integer> integers = new HashSet<>();
        int res=0;
        for(int i:nums){
            integers.add(i);
        }
        //开始遍历
       for(Integer i:integers){
           //定位开头元素
           if(!integers.contains(i-1)){
               int y=i+1;
               int cur_count=1;
               while (integers.contains(y)){
                   y++;
                   cur_count++;
               }
               res=Math.max(res,cur_count);
           }
       }

      return res;
    }

    public static void main(String[] args) {
        Sloution sloution = new Sloution();
        int[] test={1,488,2,4,3};
        int i = sloution.longestConsecutive(test);
    }
}
